package com.reger.l2cache.pipeline.core;

import com.reger.l2cache.pipeline.ops.RedisGeoPipeline;
import com.reger.l2cache.pipeline.ops.RedisHashPipeline;
import com.reger.l2cache.pipeline.ops.RedisHyperLogLogPipeline;
import com.reger.l2cache.pipeline.ops.RedisKeyPipeline;
import com.reger.l2cache.pipeline.ops.RedisListPipeline;
import com.reger.l2cache.pipeline.ops.RedisScriptingPipeline;
import com.reger.l2cache.pipeline.ops.RedisSetPipeline;
import com.reger.l2cache.pipeline.ops.RedisStringPipeline;
import com.reger.l2cache.pipeline.ops.RedisZSetPipeline;

public interface Pipeline<K, HK, V> extends RedisKeyPipeline<K>, RedisStringPipeline<K, V>, RedisListPipeline<K, V>,
		RedisSetPipeline<K, V>, RedisZSetPipeline<K, V>, RedisHashPipeline<K, HK, V>, RedisScriptingPipeline,
		RedisGeoPipeline<K, V>, RedisHyperLogLogPipeline<K, V> {

	/**
	 * 执行redis原生命令
	 * 
	 * @param command 需要执行的命令
	 * @param args    执行命令的参数
	 * @param <T>     返回值类型
	 * @return 命令执行结果
	 */
	<T> T execute(String command, byte[]... args);

}
